<?xml version="1.0"?>
<doc>
    <assembly>
        <name>BlackMagic</name>
    </assembly>
    <members>
        <member name="T:Magic.BlackMagic">
            <summary>
            Provides class instance methods for the manipulation of memory and general 'hacking' of another process.
            </summary>
        </member>
        <member name="M:Magic.BlackMagic.Execute(System.UInt32,System.UInt32)">
            <summary>
            Executes code at a given address and returns the thread's exit code.
            </summary>
            <param name="dwStartAddress">Address to be executed.</param>
            <param name="dwParameter">Parameter to be passed to the code being executed.</param>
            <returns>Returns the exit code of the thread.</returns>
        </member>
        <member name="M:Magic.BlackMagic.Execute(System.UInt32)">
            <summary>
            Executes code at a given address and returns the thread's exit code.
            </summary>
            <param name="dwStartAddress">Address to be executed.</param>
            <returns>Returns the exit code of the thread.</returns>
        </member>
        <member name="M:Magic.BlackMagic.CreateRemoteThread(System.UInt32,System.UInt32,System.UInt32,System.UInt32@)">
            <summary>
            Creates a thread inside another process' context.
            </summary>
            <param name="dwStartAddress">Address at which thread will start.</param>
            <param name="dwParameter">Parameter that will be passed to the thread.</param>
            <param name="dwCreationFlags">Flags that control creation of the thread.</param>
            <param name="dwThreadId">[Out] The id of the created thread.</param>
            <returns>Returns the handle of the created thread.</returns>
        </member>
        <member name="M:Magic.BlackMagic.CreateRemoteThread(System.UInt32,System.UInt32,System.UInt32@)">
            <summary>
            Creates a thread inside another process' context.
            </summary>
            <param name="dwStartAddress">Address at which thread will start.</param>
            <param name="dwParameter">Parameter that will be passed to the thread.</param>
            <param name="dwThreadId">[Out] The id of the created thread.</param>
            <returns>Returns the handle of the created thread.</returns>
        </member>
        <member name="M:Magic.BlackMagic.CreateRemoteThread(System.UInt32,System.UInt32)">
            <summary>
            Creates a thread inside another process' context.
            </summary>
            <param name="dwStartAddress">Address at which thread will start.</param>
            <param name="dwParameter">Parameter that will be passed to the thread.</param>
            <returns>Returns the handle of the created thread.</returns>
        </member>
        <member name="M:Magic.BlackMagic.SuspendThread(System.IntPtr)">
            <summary>
            Suspends execution of a thread.
            </summary>
            <param name="hThread">Handle to the thread to be suspended.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.SuspendThread">
            <summary>
            Suspends execution of the currently opened thread.
            </summary>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.ResumeThread(System.IntPtr)">
            <summary>
            Resumes execution of a thread.
            </summary>
            <param name="hThread">Handle to the thread to be suspended.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.ResumeThread">
            <summary>
            Resumes execution of the currently opened thread.
            </summary>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="F:Magic.BlackMagic.SetDebugPrivileges">
            <summary>
            Gets or sets whether Debug privileges will be set when opening a process.
            </summary>
        </member>
        <member name="M:Magic.BlackMagic.#ctor">
            <summary>
            Allows interfacing with an external process (memory manipulation, thread manipulation, etc.)
            </summary>
        </member>
        <member name="M:Magic.BlackMagic.#ctor(System.Int32)">
            <summary>
            Allows interfacing with an external process (memory manipulation, thread manipulation, etc.)
            </summary>
            <param name="ProcessId">Process Id of process with which we wish to interact.</param>
        </member>
        <member name="M:Magic.BlackMagic.#ctor(System.IntPtr)">
            <summary>
            Allows interfacing with an external process (memory manipulation, thread manipulation, etc.)
            </summary>
            <param name="WindowHandle">Window handle of main window of process with which we wish to interact.</param>
        </member>
        <member name="M:Magic.BlackMagic.Finalize">
            <summary>
            Closes all handles.
            </summary>
        </member>
        <member name="M:Magic.BlackMagic.Open(System.Int32)">
            <summary>
            Opens a process and its main thread for interaction.
            </summary>
            <param name="ProcessId">Process Id of process with which we wish to interact.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.Open(System.IntPtr)">
            <summary>
            Opens a process for interaction.
            </summary>
            <param name="WindowHandle">Window handle of main window of process with which we wish to interact.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.OpenThread(System.Int32)">
            <summary>
            Opens the specified thread for manipulation.
            </summary>
            <param name="dwThreadId">ID of the thread to be opened.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.OpenThread">
            <summary>
            Opens the main thread of the process already opened by this class object.
            </summary>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.OpenProcessAndThread(System.Int32)">
            <summary>
            Opens a process and its main thread for manipulation.
            </summary>
            <param name="dwProcessId">Id of the target process.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.OpenProcessAndThread(System.IntPtr)">
            <summary>
            Opens a process and its main thread for manipulation.
            </summary>
            <param name="WindowHandle">Handle to the main window of the target process.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.Close">
            <summary>
            Closes process and thread handles of open process (or does nothing if neither is open).
            </summary>
        </member>
        <member name="M:Magic.BlackMagic.CloseProcess">
            <summary>
            Closes the handle to the open process (or does nothing if a process has not been opened).
            </summary>
        </member>
        <member name="M:Magic.BlackMagic.CloseThread">
            <summary>
            Closes the handle to the open thread (or does nothing if a thread has not been opened).
            </summary>
        </member>
        <member name="M:Magic.BlackMagic.GetModuleFilePath">
            <summary>
            Gets the full file path of the main module of the opened process.
            </summary>
            <returns>Returns a string representing the full file path of the main module of the opened process.</returns>
        </member>
        <member name="M:Magic.BlackMagic.GetModuleFilePath(System.Int32)">
            <summary>
            Gets the full file path of the specified module loaded by the opened process.
            </summary>
            <param name="index">Index of the module whose full file path is wanted.</param>
            <returns>Returns a string representing the full file path of the specified module loaded by the opened process.</returns>
        </member>
        <member name="M:Magic.BlackMagic.GetModuleFilePath(System.String)">
            <summary>
            Gets the full file path of the specified module loaded by the opened process.
            </summary>
            <param name="sModuleName"></param>
            <returns></returns>
        </member>
        <member name="M:Magic.BlackMagic.GetModule(System.String)">
            <summary>
            Gets the module loaded by the opened process that matches the given string.
            </summary>
            <param name="sModuleName">String specifying which module to return.</param>
            <returns>Returns the module loaded by the opened process that matches the given string.</returns>
        </member>
        <member name="M:Magic.BlackMagic.GetModule(System.UInt32)">
            <summary>
            Gets the module loaded by the opened process in which the given address resides.
            </summary>
            <param name="dwAddress">An address inside the process owned by the module that will be returned.</param>
            <returns>Returns null on failure, or the module that owns the given address on success.</returns>
        </member>
        <member name="M:Magic.BlackMagic.InjectDllCreateThread(System.String)">
            <summary>
            Injects a dll into a process by creating a remote thread on LoadLibrary.
            </summary>
            <param name="szDllPath">Full path of the dll that will be injected.</param>
            <returns>Returns the base address of the injected dll on success, zero on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.InjectDllRedirectThread(System.String)">
            <summary>
            Injects a dll into a process by hijacking the given thread and redirecting it to LoadLibrary.
            </summary>
            <param name="szDllPath">Full path of the dll that will be injected.</param>
            <returns>Returns the base address of the injected dll on success, zero on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.InjectDllRedirectThread(System.IntPtr,System.String)">
            <summary>
            Injects a dll into a process by hijacking the given thread and redirecting it to LoadLibrary.
            </summary>
            <param name="hThread">Handle to the thread which will be hijacked.</param>
            <param name="szDllPath">Full path of the dll that will be injected.</param>
            <returns>Returns the base address of the injected dll on success, zero on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.WriteBytes(System.UInt32,System.Byte[],System.Int32)">
            <summary>
            Writes a value to another process' memory.
            </summary>
            <param name="dwAddress">Address at which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <param name="nSize">Number of bytes to be written.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.WriteBytes(System.UInt32,System.Byte[])">
            <summary>
            Writes a value to another process' memory.
            </summary>
            <param name="dwAddress">Address at which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.WriteByte(System.UInt32,System.Byte)">
            <summary>
            Writes a value to another process' memory.
            </summary>
            <param name="dwAddress">Address at which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.WriteSByte(System.UInt32,System.SByte)">
            <summary>
            Writes a value to another process' memory.
            </summary>
            <param name="dwAddress">Address at which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.WriteUShort(System.UInt32,System.UInt16)">
            <summary>
            Writes a value to another process' memory.
            </summary>
            <param name="dwAddress">Address at which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.WriteShort(System.UInt32,System.Int16)">
            <summary>
            Writes a value to another process' memory.
            </summary>
            <param name="dwAddress">Address at which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.WriteUInt(System.UInt32,System.UInt32)">
            <summary>
            Writes a value to another process' memory.
            </summary>
            <param name="dwAddress">Address at which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.WriteInt(System.UInt32,System.Int32)">
            <summary>
            Writes a value to another process' memory.
            </summary>
            <param name="dwAddress">Address at which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.WriteUInt64(System.UInt32,System.UInt64)">
            <summary>
            Writes a value to another process' memory.
            </summary>
            <param name="dwAddress">Address at which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.WriteInt64(System.UInt32,System.Int64)">
            <summary>
            Writes a value to another process' memory.
            </summary>
            <param name="dwAddress">Address at which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.WriteFloat(System.UInt32,System.Single)">
            <summary>
            Writes a value to another process' memory.
            </summary>
            <param name="dwAddress">Address at which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.WriteDouble(System.UInt32,System.Double)">
            <summary>
            Writes a value to another process' memory.
            </summary>
            <param name="dwAddress">Address at which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.WriteObject(System.UInt32,System.Object,System.Type)">
            <summary>
            Writes a value to another process' memory.
            </summary>
            <param name="dwAddress">Address at which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <param name="objType">Type of object to be written (hint: use Object.GetType() or typeof(ObjectType)).</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.WriteObject(System.UInt32,System.Object)">
            <summary>
            Writes a value to another process' memory.
            </summary>
            <param name="dwAddress">Address at which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.WriteASCIIString(System.UInt32,System.String)">
            <summary>
            Writes a value to another process' memory.
            </summary>
            <param name="dwAddress">Address at which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.WriteUnicodeString(System.UInt32,System.String)">
            <summary>
            Writes a value to another process' memory.
            </summary>
            <param name="dwAddress">Address at which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.ReadBytes(System.UInt32,System.Int32)">
            <summary>
            Reads a value from memory
            </summary>
            <param name="dwAddress">Address at which value will be read.</param>
            <param name="nSize">Number of bytes to read from memory.</param>
            <exception cref="T:System.Exception">Throws general exception on failure.</exception>
            <returns>Returns the value that was read from memory.</returns>
        </member>
        <member name="M:Magic.BlackMagic.ReadByte(System.UInt32)">
            <summary>
            Reads a value from memory.
            </summary>
            <param name="dwAddress">Address at which value will be read.</param>
            <exception cref="T:System.Exception">Throws general exception on failure.</exception>
            <returns>Returns the value that was read from memory.</returns>
        </member>
        <member name="M:Magic.BlackMagic.ReadSByte(System.UInt32)">
            <summary>
            Reads a value from memory.
            </summary>
            <param name="dwAddress">Address at which value will be read.</param>
            <exception cref="T:System.Exception">Throws general exception on failure.</exception>
            <returns>Returns the value that was read from memory.</returns>
        </member>
        <member name="M:Magic.BlackMagic.ReadUShort(System.UInt32)">
            <summary>
            Reads a value from memory.
            </summary>
            <param name="dwAddress">Address at which value will be read.</param>
            <exception cref="T:System.Exception">Throws general exception on failure.</exception>
            <returns>Returns the value that was read from memory.</returns>
        </member>
        <member name="M:Magic.BlackMagic.ReadUShort(System.UInt32,System.Boolean)">
            <summary>
            Reads a value from memory.
            </summary>
            <param name="dwAddress">Address at which value will be read.</param>
            <param name="bReverse">Determines whether bytes read will be reversed or not (Little endian or big endian).  Usually 'false'.</param>
            <exception cref="T:System.Exception">Throws general exception on failure.</exception>
            <returns>Returns the value that was read from memory.</returns>
            <remarks>Sometimes one needs to read a value where the most significant bytes is not first (i.e. when reading a network packet from memory).  In this case, one would specify 'true' for the bReverse parameter to get the value in a readable format.</remarks>
        </member>
        <member name="M:Magic.BlackMagic.ReadShort(System.UInt32)">
            <summary>
            Reads a value from memory.
            </summary>
            <param name="dwAddress">Address at which value will be read.</param>
            <exception cref="T:System.Exception">Throws general exception on failure.</exception>
            <returns>Returns the value that was read from memory.</returns>
        </member>
        <member name="M:Magic.BlackMagic.ReadShort(System.UInt32,System.Boolean)">
            <summary>
            Reads a value from memory.
            </summary>
            <param name="dwAddress">Address at which value will be read.</param>
            <param name="bReverse">Determines whether bytes read will be reversed or not (Little endian or big endian).  Usually 'false'.</param>
            <exception cref="T:System.Exception">Throws general exception on failure.</exception>
            <returns>Returns the value that was read from memory.</returns>
            <remarks>Sometimes one needs to read a value where the most significant bytes is not first (i.e. when reading a network packet from memory).  In this case, one would specify 'true' for the bReverse parameter to get the value in a readable format.</remarks>
        </member>
        <member name="M:Magic.BlackMagic.ReadUInt(System.UInt32)">
            <summary>
            Reads a value from memory.
            </summary>
            <param name="dwAddress">Address at which value will be read.</param>
            <exception cref="T:System.Exception">Throws general exception on failure.</exception>
            <returns>Returns the value that was read from memory.</returns>
        </member>
        <member name="M:Magic.BlackMagic.ReadUInt(System.UInt32,System.Boolean)">
            <summary>
            Reads a value from memory.
            </summary>
            <param name="dwAddress">Address at which value will be read.</param>
            <param name="bReverse">Determines whether bytes read will be reversed or not (Little endian or big endian).  Usually 'false'.</param>
            <exception cref="T:System.Exception">Throws general exception on failure.</exception>
            <returns>Returns the value that was read from memory.</returns>
            <remarks>Sometimes one needs to read a value where the most significant bytes is not first (i.e. when reading a network packet from memory).  In this case, one would specify 'true' for the bReverse parameter to get the value in a readable format.</remarks>
        </member>
        <member name="M:Magic.BlackMagic.ReadInt(System.UInt32)">
            <summary>
            Reads a value from memory.
            </summary>
            <param name="dwAddress">Address at which value will be read.</param>
            <exception cref="T:System.Exception">Throws general exception on failure.</exception>
            <returns>Returns the value that was read from memory.</returns>
        </member>
        <member name="M:Magic.BlackMagic.ReadInt(System.UInt32,System.Boolean)">
            <summary>
            Reads a value from memory.
            </summary>
            <param name="dwAddress">Address at which value will be read.</param>
            <param name="bReverse">Determines whether bytes read will be reversed or not (Little endian or big endian).  Usually 'false'.</param>
            <exception cref="T:System.Exception">Throws general exception on failure.</exception>
            <returns>Returns the value that was read from memory.</returns>
            <remarks>Sometimes one needs to read a value where the most significant bytes is not first (i.e. when reading a network packet from memory).  In this case, one would specify 'true' for the bReverse parameter to get the value in a readable format.</remarks>
        </member>
        <member name="M:Magic.BlackMagic.ReadUInt64(System.UInt32)">
            <summary>
            Reads a value from memory.
            </summary>
            <param name="dwAddress">Address at which value will be read.</param>
            <exception cref="T:System.Exception">Throws general exception on failure.</exception>
            <returns>Returns the value that was read from memory.</returns>
        </member>
        <member name="M:Magic.BlackMagic.ReadUInt64(System.UInt32,System.Boolean)">
            <summary>
            Reads a value from memory.
            </summary>
            <param name="dwAddress">Address at which value will be read.</param>
            <param name="bReverse">Determines whether bytes read will be reversed or not (Little endian or big endian).  Usually 'false'.</param>
            <exception cref="T:System.Exception">Throws general exception on failure.</exception>
            <returns>Returns the value that was read from memory.</returns>
            <remarks>Sometimes one needs to read a value where the most significant bytes is not first (i.e. when reading a network packet from memory).  In this case, one would specify 'true' for the bReverse parameter to get the value in a readable format.</remarks>
        </member>
        <member name="M:Magic.BlackMagic.ReadInt64(System.UInt32)">
            <summary>
            Reads a value from memory.
            </summary>
            <param name="dwAddress">Address at which value will be read.</param>
            <exception cref="T:System.Exception">Throws general exception on failure.</exception>
            <returns>Returns the value that was read from memory.</returns>
        </member>
        <member name="M:Magic.BlackMagic.ReadInt64(System.UInt32,System.Boolean)">
            <summary>
            Reads a value from memory.
            </summary>
            <param name="dwAddress">Address at which value will be read.</param>
            <param name="bReverse">Determines whether bytes read will be reversed or not (Little endian or big endian).  Usually 'false'.</param>
            <exception cref="T:System.Exception">Throws general exception on failure.</exception>
            <returns>Returns the value that was read from memory.</returns>
            <remarks>Sometimes one needs to read a value where the most significant bytes is not first (i.e. when reading a network packet from memory).  In this case, one would specify 'true' for the bReverse parameter to get the value in a readable format.</remarks>
        </member>
        <member name="M:Magic.BlackMagic.ReadFloat(System.UInt32)">
            <summary>
            Reads a value from memory.
            </summary>
            <param name="dwAddress">Address at which value will be read.</param>
            <exception cref="T:System.Exception">Throws general exception on failure.</exception>
            <returns>Returns the value that was read from memory.</returns>
        </member>
        <member name="M:Magic.BlackMagic.ReadFloat(System.UInt32,System.Boolean)">
            <summary>
            Reads a value from memory.
            </summary>
            <param name="dwAddress">Address at which value will be read.</param>
            <param name="bReverse">Determines whether bytes read will be reversed or not (Little endian or big endian).  Usually 'false'.</param>
            <exception cref="T:System.Exception">Throws general exception on failure.</exception>
            <returns>Returns the value that was read from memory.</returns>
            <remarks>Sometimes one needs to read a value where the most significant bytes is not first (i.e. when reading a network packet from memory).  In this case, one would specify 'true' for the bReverse parameter to get the value in a readable format.</remarks>
        </member>
        <member name="M:Magic.BlackMagic.ReadDouble(System.UInt32)">
            <summary>
            Reads a value from memory.
            </summary>
            <param name="dwAddress">Address at which value will be read.</param>
            <exception cref="T:System.Exception">Throws general exception on failure.</exception>
            <returns>Returns the value that was read from memory.</returns>
        </member>
        <member name="M:Magic.BlackMagic.ReadDouble(System.UInt32,System.Boolean)">
            <summary>
            Reads a value from memory.
            </summary>
            <param name="dwAddress">Address at which value will be read.</param>
            <param name="bReverse">Determines whether bytes read will be reversed or not (Little endian or big endian).  Usually 'false'.</param>
            <exception cref="T:System.Exception">Throws general exception on failure.</exception>
            <returns>Returns the value that was read from memory.</returns>
            <remarks>Sometimes one needs to read a value where the most significant bytes is not first (i.e. when reading a network packet from memory).  In this case, one would specify 'true' for the bReverse parameter to get the value in a readable format.</remarks>
        </member>
        <member name="M:Magic.BlackMagic.ReadObject(System.UInt32,System.Type)">
            <summary>
            Reads a value from memory.
            </summary>
            <param name="dwAddress">Address at which value will be read.</param>
            <param name="objType">Type of object to be read (hint: use Object.GetType() or typeof(ObjectType) macro).</param>
            <exception cref="T:System.Exception">Throws general exception on failure.</exception>
            <returns>Returns the value that was read from memory.</returns>
        </member>
        <member name="M:Magic.BlackMagic.ReadASCIIString(System.UInt32,System.Int32)">
            <summary>
            Reads a value from memory.
            </summary>
            <param name="dwAddress">Address at which value will be read.</param>
            <param name="nLength">Maximum number of characters to be read.</param>
            <exception cref="T:System.Exception">Throws general exception on failure.</exception>
            <returns>Returns the value that was read from memory.</returns>
        </member>
        <member name="M:Magic.BlackMagic.ReadUnicodeString(System.UInt32,System.Int32)">
            <summary>
            Reads a value from memory.
            </summary>
            <param name="dwAddress">Address at which value will be read.</param>
            <param name="nLength">Maximum number of characters to be read.</param>
            <exception cref="T:System.Exception">Throws general exception on failure.</exception>
            <returns>Returns the value that was read from memory.</returns>
        </member>
        <member name="M:Magic.BlackMagic.AllocateMemory(System.Int32,System.UInt32,System.UInt32)">
            <summary>
            Allocates memory inside the opened process.
            </summary>
            <param name="nSize">Number of bytes to allocate.</param>
            <param name="dwAllocationType">Type of memory allocation.  See <see cref="T:Magic.MemoryAllocType"/>.</param>
            <param name="dwProtect">Type of memory protection.  See <see cref="T:Magic.MemoryProtectType"/></param>
            <returns>Returns NULL on failure, or the base address of the allocated memory on success.</returns>
        </member>
        <member name="M:Magic.BlackMagic.AllocateMemory(System.Int32)">
            <summary>
            Allocates memory inside the opened process.
            </summary>
            <param name="nSize">Number of bytes to allocate.</param>
            <returns>Returns NULL on failure, or the base address of the allocated memory on success.</returns>
            <remarks>
            Allocates memory using <see cref="F:Magic.MemoryAllocType.MEM_COMMIT"/> and <see cref="F:Magic.MemoryProtectType.PAGE_EXECUTE_READWRITE"/>.
            </remarks>
        </member>
        <member name="M:Magic.BlackMagic.AllocateMemory">
            <summary>
            Allocates memory inside the opened process.
            </summary>
            <returns>Returns NULL on failure, or the base address of the allocated memory on success.</returns>
            <remarks>
            Allocates 0x1000 bytes of memory using <see cref="F:Magic.MemoryAllocType.MEM_COMMIT"/> and <see cref="F:Magic.MemoryProtectType.PAGE_EXECUTE_READWRITE"/>.
            </remarks>
        </member>
        <member name="M:Magic.BlackMagic.FreeMemory(System.UInt32,System.Int32,System.UInt32)">
            <summary>
            Frees an allocated block of memory in the opened process.
            </summary>
            <param name="dwAddress">Base address of the block of memory to be freed.</param>
            <param name="nSize">Number of bytes to be freed.  This must be zero (0) if using <see cref="F:Magic.MemoryFreeType.MEM_RELEASE"/>.</param>
            <param name="dwFreeType">Type of free operation to use.  See <see cref="T:Magic.MemoryFreeType"/>.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.BlackMagic.FreeMemory(System.UInt32)">
            <summary>
            Frees an allocated block of memory in the opened process.
            </summary>
            <param name="dwAddress">Base address of the block of memory to be freed.</param>
            <returns>Returns true on success, false on failure.</returns>
            <remarks>
            Frees a block of memory using <see cref="F:Magic.MemoryFreeType.MEM_RELEASE"/>.
            </remarks>
        </member>
        <member name="P:Magic.BlackMagic.IsProcessOpen">
            <summary>
            Get whether a process is open for manipulation.
            </summary>
        </member>
        <member name="P:Magic.BlackMagic.IsThreadOpen">
            <summary>
            Gets whether a process is open for manipulation.
            </summary>
        </member>
        <member name="P:Magic.BlackMagic.ProcessHandle">
            <summary>
            Gets the handle of the currently opened process.
            </summary>
        </member>
        <member name="P:Magic.BlackMagic.ProcessId">
            <summary>
            Gets the Id of the currently opened process.
            </summary>
        </member>
        <member name="P:Magic.BlackMagic.WindowHandle">
            <summary>
            Gets the handle of the main window of the currently opened process.
            </summary>
        </member>
        <member name="P:Magic.BlackMagic.ThreadId">
            <summary>
            Gets the Id of the currently opened thread.
            </summary>
        </member>
        <member name="P:Magic.BlackMagic.ThreadHandle">
            <summary>
            Gets the handle to the currently opened thread.
            </summary>
        </member>
        <member name="P:Magic.BlackMagic.MainModule">
            <summary>
            Gets the main module of the opened process.
            </summary>
        </member>
        <member name="P:Magic.BlackMagic.Modules">
            <summary>
            Gets the collection of modules currently loaded in the target process.
            </summary>
        </member>
        <member name="P:Magic.BlackMagic.Asm">
            <summary>
            Assembles mnemonics into bytecode and allows for injection and execution.
            </summary>
        </member>
        <member name="T:Magic.SThread">
            <summary>
            Static methods for manipulating threads.
            </summary>
        </member>
        <member name="M:Magic.SThread.OpenThread(System.UInt32,System.Int32)">
            <summary>
            Opens a thread for manipulation.
            </summary>
            <param name="dwDesiredAccess">The desired access rights to the thread in question.</param>
            <param name="dwThreadId">The ID of the thread in question.</param>
            <returns>Returns a handle to the thread allowing manipulation.</returns>
        </member>
        <member name="M:Magic.SThread.OpenThread(System.Int32)">
            <summary>
            Opens a thread for manipulation.  AccessRights.THREAD_ALL_ACCESS is automatically granted.
            </summary>
            <param name="dwThreadId">The ID of the thread in question.</param>
            <returns>Returns a handle to the thread allowing manipulation.</returns>
        </member>
        <member name="M:Magic.SThread.GetMainThreadId(System.Int32)">
            <summary>
            Gets the main thread ID of a given process.
            </summary>
            <param name="dwProcessId">The ID of the process whose main thread ID will be returned.</param>
            <returns>Returns non-zero on success, zero on failure.</returns>
        </member>
        <member name="M:Magic.SThread.GetMainThreadId(System.IntPtr)">
            <summary>
            Gets the main thread ID of a given process.
            </summary>
            <param name="hWindowHandle">The window handle of the process whose main thread ID will be returned.</param>
            <returns>Returns non-zero on success, zero on failure.</returns>
        </member>
        <member name="M:Magic.SThread.GetMainThread(System.Int32)">
            <summary>
            Gets the main thread of a given process.
            </summary>
            <param name="dwProcessId">The ID of the process whose main thread will be returned.</param>
            <returns>Returns the main thread on success, null on failure.</returns>
        </member>
        <member name="M:Magic.SThread.GetMainThread(System.IntPtr)">
            <summary>
            Gets the main thread of a given process.
            </summary>
            <param name="hWindowHandle">The window handle of the process whose main thread will be returned.</param>
            <returns>Returns the main thread on success, null on failure.</returns>
        </member>
        <member name="M:Magic.SThread.GetThreadContext(System.IntPtr,System.UInt32)">
            <summary>
            Gets the context of a given thread.
            </summary>
            <param name="hThread">Handle to the thread for which the context will be returned.</param>
            <param name="ContextFlags">Determines which set(s) of registers will be returned.</param>
            <returns>Returns the context of the thread.  If failure, sets CONTEXT.ContextFlags to zero.</returns>
        </member>
        <member name="M:Magic.SThread.SetThreadContext(System.IntPtr,Magic.CONTEXT)">
            <summary>
            Sets the context of a given thread.
            </summary>
            <param name="hThread">Handle to the thread for which the context will be set.</param>
            <param name="ctx">CONTEXT structure to which the thread's context will be set.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.SThread.SuspendThread(System.IntPtr)">
            <summary>
            Suspends execution of a given thread.
            </summary>
            <param name="hThread">Handle to the thread that will be suspended.</param>
            <returns>Returns (DWORD)-1 on failure, otherwise the suspend count of the thread.</returns>
        </member>
        <member name="M:Magic.SThread.ResumeThread(System.IntPtr)">
            <summary>
            Resumes execution of a given thread.
            </summary>
            <param name="hThread">Handle to the thread that will be suspended.</param>
            <returns>Returns (DWORD)-1 on failure, otherwise the previous suspend count of the thread.</returns>
        </member>
        <member name="M:Magic.SThread.TerminateThread(System.IntPtr,System.UInt32)">
            <summary>
            Terminates the specified thread.
            </summary>
            <param name="hThread">Handle to the thread to exit.</param>
            <param name="dwExitCode">Exit code that will be stored in the thread object.</param>
            <returns>Returns zero on failure, non-zero on success.</returns>
        </member>
        <member name="M:Magic.SThread.CreateRemoteThread(System.IntPtr,System.UInt32,System.UInt32)">
            <summary>
            Creates a thread inside another process' context.
            </summary>
            <param name="hProcess">Handle to the process inside which thread will be created.</param>
            <param name="dwStartAddress">Address at which thread will start.</param>
            <param name="dwParameter">Parameter that will be passed to the thread.</param>
            <returns>Returns the handle of the created thread.</returns>
        </member>
        <member name="M:Magic.SThread.CreateRemoteThread(System.IntPtr,System.UInt32,System.UInt32,System.UInt32@)">
            <summary>
            Creates a thread inside another process' context.
            </summary>
            <param name="hProcess">Handle to the process inside which thread will be created.</param>
            <param name="dwStartAddress">Address at which thread will start.</param>
            <param name="dwParameter">Parameter that will be passed to the thread.</param>
            /// <param name="dwThreadId">[Out] The id of the created thread.</param>
            <returns>Returns the handle of the created thread.</returns>
        </member>
        <member name="M:Magic.SThread.CreateRemoteThread(System.IntPtr,System.UInt32,System.UInt32,System.UInt32,System.UInt32@)">
            <summary>
            Creates a thread inside another process' context.
            </summary>
            <param name="hProcess">Handle to the process inside which thread will be created.</param>
            <param name="dwStartAddress">Address at which thread will start.</param>
            <param name="dwParameter">Parameter that will be passed to the thread.</param>
            <param name="dwCreationFlags">Flags that control creation of the thread.</param>
            <param name="dwThreadId">[Out] The id of the created thread.</param>
            <returns>Returns the handle of the created thread.</returns>
        </member>
        <member name="M:Magic.SThread.GetExitCodeThread(System.IntPtr)">
            <summary>
            Gets the exit code of the specified thread.
            </summary>
            <param name="hThread">Handle to the thread whose exit code is wanted.</param>
            <returns>Returns 0 on failure, non-zero on success.</returns>
        </member>
        <member name="M:Magic.SThread.WaitForSingleObject(System.IntPtr)">
            <summary>
            Waits for an object to enter a signaled state.
            </summary>
            <param name="hObject">The object for which to wait.</param>
            <returns>Returns one of the values in the static WaitValues class.</returns>
        </member>
        <member name="M:Magic.SThread.WaitForSingleObject(System.IntPtr,System.UInt32)">
            <summary>
            Waits for an object to enter a signaled state.
            </summary>
            <param name="hObject">The object for which to wait.</param>
            <param name="dwMilliseconds">Number of milliseconds to wait.</param>
            <returns>Returns one of the values in the static WaitValues class.</returns>
        </member>
        <member name="T:Magic.AccessRights">
            <summary>
            Values to gain required access to process or thread.
            </summary>
        </member>
        <member name="F:Magic.AccessRights.STANDARD_RIGHTS_REQUIRED">
            <summary>
            Standard rights required to mess with an object's security descriptor, change, or delete the object.
            </summary>
        </member>
        <member name="F:Magic.AccessRights.SYNCHRONIZE">
            <summary>
            The right to use the object for synchronization. This enables a thread to wait until the object is in the signaled state. Some object types do not support this access right.
            </summary>
        </member>
        <member name="F:Magic.AccessRights.PROCESS_TERMINATE">
            <summary>
            Required to terminate a process using TerminateProcess.
            </summary>
        </member>
        <member name="F:Magic.AccessRights.PROCESS_CREATE_THREAD">
            <summary>
            Required to create a thread.
            </summary>
        </member>
        <member name="F:Magic.AccessRights.PROCESS_VM_OPERATION">
            <summary>
            Required to perform an operation on the address space of a process (see VirtualProtectEx and WriteProcessMemory).
            </summary>
        </member>
        <member name="F:Magic.AccessRights.PROCESS_VM_READ">
            <summary>
            Required to read memory in a process using ReadProcessMemory.
            </summary>
        </member>
        <member name="F:Magic.AccessRights.PROCESS_VM_WRITE">
            <summary>
            Required to write memory in a process using WriteProcessMemory.
            </summary>
        </member>
        <member name="F:Magic.AccessRights.PROCESS_DUP_HANDLE">
            <summary>
            Required to duplicate a handle using DuplicateHandle.
            </summary>
        </member>
        <member name="F:Magic.AccessRights.PROCESS_CREATE_PROCESS">
            <summary>
            Required to create a process.
            </summary>
        </member>
        <member name="F:Magic.AccessRights.PROCESS_SET_QUOTA">
            <summary>
            Required to set memory limits using SetProcessWorkingSetSize.
            </summary>
        </member>
        <member name="F:Magic.AccessRights.PROCESS_SET_INFORMATION">
            <summary>
            Required to set certain information about a process, such as its priority class (see SetPriorityClass).
            </summary>
        </member>
        <member name="F:Magic.AccessRights.PROCESS_QUERY_INFORMATION">
            <summary>
            Required to retrieve certain information about a process, such as its token, exit code, and priority class (see OpenProcessToken, GetExitCodeProcess, GetPriorityClass, and IsProcessInJob).
            </summary>
        </member>
        <member name="F:Magic.AccessRights.PROCESS_SUSPEND_RESUME">
            <summary>
            Required to suspend or resume a process.
            </summary>
        </member>
        <member name="F:Magic.AccessRights.PROCESS_QUERY_LIMITED_INFORMATION">
            <summary>
            Required to retrieve certain information about a process (see QueryFullProcessImageName). A handle that has the PROCESS_QUERY_INFORMATION access right is automatically granted PROCESS_QUERY_LIMITED_INFORMATION.
            </summary>
        </member>
        <member name="F:Magic.AccessRights.PROCESS_ALL_ACCESS">
            <summary>
            All possible access rights for a process object.
            </summary>
        </member>
        <member name="F:Magic.AccessRights.THREAD_TERMINATE">
            <summary>
            Required to terminate a thread using TerminateThread.
            </summary>
        </member>
        <member name="F:Magic.AccessRights.THREAD_SUSPEND_RESUME">
            <summary>
            Required to suspend or resume a thread.
            </summary>
        </member>
        <member name="F:Magic.AccessRights.THREAD_GET_CONTEXT">
            <summary>
            Required to read the context of a thread using <see cref="M:Magic.Imports.GetThreadContext(System.IntPtr,Magic.CONTEXT@)"/>
            </summary>
        </member>
        <member name="F:Magic.AccessRights.THREAD_SET_CONTEXT">
            <summary>
            Required to set the context of a thread using <see cref="M:Magic.Imports.SetThreadContext(System.IntPtr,Magic.CONTEXT@)"/>
            </summary>
        </member>
        <member name="F:Magic.AccessRights.THREAD_QUERY_INFORMATION">
            <summary>
            Required to read certain information from the thread object, such as the exit code (see GetExitCodeThread).
            </summary>
        </member>
        <member name="F:Magic.AccessRights.THREAD_SET_INFORMATION">
            <summary>
            Required to set certain information in the thread object.
            </summary>
        </member>
        <member name="F:Magic.AccessRights.THREAD_SET_THREAD_TOKEN">
            <summary>
            Required to set the impersonation token for a thread using SetThreadToken.
            </summary>
        </member>
        <member name="F:Magic.AccessRights.THREAD_IMPERSONATE">
            <summary>
            Required to use a thread's security information directly without calling it by using a communication mechanism that provides impersonation services.
            </summary>
        </member>
        <member name="F:Magic.AccessRights.THREAD_DIRECT_IMPERSONATION">
            <summary>
            Required for a server thread that impersonates a client.
            </summary>
        </member>
        <member name="F:Magic.AccessRights.THREAD_ALL_ACCESS">
            <summary>
            All possible access rights for a thread object.
            </summary>
        </member>
        <member name="T:Magic.MemoryAllocType">
            <summary>
            Values that determine how memory is allocated.
            </summary>
        </member>
        <member name="F:Magic.MemoryAllocType.MEM_COMMIT">
             <summary>
             Allocates physical storage in memory or in the paging file on disk for the specified reserved memory pages. The function initializes the memory to zero. 
            
            To reserve and commit pages in one step, call VirtualAllocEx with MEM_COMMIT | MEM_RESERVE.
            
            The function fails if you attempt to commit a page that has not been reserved. The resulting error code is ERROR_INVALID_ADDRESS.
            
            An attempt to commit a page that is already committed does not cause the function to fail. This means that you can commit pages without first determining the current commitment state of each page.
             </summary>
        </member>
        <member name="F:Magic.MemoryAllocType.MEM_RESERVE">
             <summary>
             Reserves a range of the process's virtual address space without allocating any actual physical storage in memory or in the paging file on disk.
            
            You commit reserved pages by calling VirtualAllocEx again with MEM_COMMIT.
             </summary>
        </member>
        <member name="F:Magic.MemoryAllocType.MEM_RESET">
             <summary>
             Indicates that data in the memory range specified by lpAddress and dwSize is no longer of interest. The pages should not be read from or written to the paging file. However, the memory block will be used again later, so it should not be decommitted. This value cannot be used with any other value.
            
            Using this value does not guarantee that the range operated on with MEM_RESET will contain zeroes. If you want the range to contain zeroes, decommit the memory and then recommit it.
             </summary>
        </member>
        <member name="F:Magic.MemoryAllocType.MEM_PHYSICAL">
             <summary>
             Reserves an address range that can be used to map Address Windowing Extensions (AWE) pages.
            
            This value must be used with MEM_RESERVE and no other values.
             </summary>
        </member>
        <member name="F:Magic.MemoryAllocType.MEM_TOP_DOWN">
            <summary>
            Allocates memory at the highest possible address. 
            </summary>
        </member>
        <member name="T:Magic.MemoryProtectType">
            <summary>
            Values that determine how a block of memory is protected.
            </summary>
        </member>
        <member name="F:Magic.MemoryProtectType.PAGE_EXECUTE">
            <summary>
            Enables execute access to the committed region of pages. An attempt to read or write to the committed region results in an access violation. 
            </summary>
        </member>
        <member name="F:Magic.MemoryProtectType.PAGE_EXECUTE_READ">
            <summary>
            Enables execute and read access to the committed region of pages. An attempt to write to the committed region results in an access violation. 
            </summary>
        </member>
        <member name="F:Magic.MemoryProtectType.PAGE_EXECUTE_READWRITE">
            <summary>
            Enables execute, read, and write access to the committed region of pages. 
            </summary>
        </member>
        <member name="F:Magic.MemoryProtectType.PAGE_EXECUTE_WRITECOPY">
            <summary>
            Enables execute, read, and write access to the committed region of image file code pages. The pages are shared read-on-write and copy-on-write. 
            </summary>
        </member>
        <member name="F:Magic.MemoryProtectType.PAGE_NOACCESS">
            <summary>
            Disables all access to the committed region of pages. An attempt to read from, write to, or execute the committed region results in an access violation exception, called a general protection (GP) fault. 
            </summary>
        </member>
        <member name="F:Magic.MemoryProtectType.PAGE_READONLY">
            <summary>
            Enables read access to the committed region of pages. An attempt to write to the committed region results in an access violation. If the system differentiates between read-only access and execute access, an attempt to execute code in the committed region results in an access violation.
            </summary>
        </member>
        <member name="F:Magic.MemoryProtectType.PAGE_READWRITE">
            <summary>
            Enables both read and write access to the committed region of pages.
            </summary>
        </member>
        <member name="F:Magic.MemoryProtectType.PAGE_WRITECOPY">
            <summary>
            Gives copy-on-write protection to the committed region of pages. 
            </summary>
        </member>
        <member name="F:Magic.MemoryProtectType.PAGE_GUARD">
             <summary>
            Pages in the region become guard pages. Any attempt to access a guard page causes the system to raise a STATUS_GUARD_PAGE_VIOLATION exception and turn off the guard page status. Guard pages thus act as a one-time access alarm. For more information, see Creating Guard Pages.
            
            When an access attempt leads the system to turn off guard page status, the underlying page protection takes over.
            
            If a guard page exception occurs during a system service, the service typically returns a failure status indicator.
            
            This value cannot be used with PAGE_NOACCESS.
             </summary>
        </member>
        <member name="F:Magic.MemoryProtectType.PAGE_NOCACHE">
             <summary>
             Does not allow caching of the committed regions of pages in the CPU cache. The hardware attributes for the physical memory should be specified as "no cache." This is not recommended for general usage. It is useful for device drivers, for example, mapping a video frame buffer with no caching.
            
            This value cannot be used with PAGE_NOACCESS.
             </summary>
        </member>
        <member name="F:Magic.MemoryProtectType.PAGE_WRITECOMBINE">
             <summary>
             Enables write-combined memory accesses. When enabled, the processor caches memory write requests to optimize performance. Thus, if two requests are made to write to the same memory address, only the more recent write may occur.
            
            Note that the PAGE_GUARD and PAGE_NOCACHE flags cannot be specified with PAGE_WRITECOMBINE. If an attempt is made to do so, the SYSTEM_INVALID_PAGE_PROTECTION NT error code is returned by the function.
             </summary>
        </member>
        <member name="T:Magic.MemoryFreeType">
            <summary>
            Values that determine how a block of memory is freed.
            </summary>
        </member>
        <member name="F:Magic.MemoryFreeType.MEM_DECOMMIT">
             <summary>
             Decommits the specified region of committed pages. After the operation, the pages are in the reserved state.
            
            The function does not fail if you attempt to decommit an uncommitted page. This means that you can decommit a range of pages without first determining their current commitment state.
            
            Do not use this value with MEM_RELEASE.
             </summary>
        </member>
        <member name="F:Magic.MemoryFreeType.MEM_RELEASE">
             <summary>
             Releases the specified region of pages. After the operation, the pages are in the free state.
            
             If you specify this value, dwSize must be 0 (zero), and lpAddress must point to the base address returned by the VirtualAllocEx function when the region is reserved. The function fails if either of these conditions is not met.
            
             If any pages in the region are committed currently, the function first decommits, and then releases them.
            
             The function does not fail if you attempt to release pages that are in different states, some reserved and some committed. This means that you can release a range of pages without first determining the current commitment state.
            
             Do not use this value with MEM_DECOMMIT.
             </summary>
        </member>
        <member name="T:Magic.ThreadFlags">
            <summary>
            Values which determine the state or creation-state of a thread.
            </summary>
        </member>
        <member name="F:Magic.ThreadFlags.THREAD_EXECUTE_IMMEDIATELY">
            <summary>
            The thread will execute immediately.
            </summary>
        </member>
        <member name="F:Magic.ThreadFlags.CREATE_SUSPENDED">
            <summary>
            The thread will be created in a suspended state.  Use <see cref="M:Magic.Imports.ResumeThread(System.IntPtr)"/> to resume the thread.
            </summary>
        </member>
        <member name="F:Magic.ThreadFlags.STACK_SIZE_PARAM_IS_A_RESERVATION">
            <summary>
            The dwStackSize parameter specifies the initial reserve size of the stack. If this flag is not specified, dwStackSize specifies the commit size.
            </summary>
        </member>
        <member name="F:Magic.ThreadFlags.STILL_ACTIVE">
            <summary>
            The thread is still active.
            </summary>
        </member>
        <member name="T:Magic.WaitValues">
            <summary>
            Values that determine the wait status of an object (thread, mutex, event, etc.).
            </summary>
        </member>
        <member name="F:Magic.WaitValues.WAIT_OBJECT_0">
            <summary>
            The object is in a signaled state.
            </summary>
        </member>
        <member name="F:Magic.WaitValues.WAIT_ABANDONED">
            <summary>
            The specified object is a mutex object that was not released by the thread that owned the mutex object before the owning thread terminated. Ownership of the mutex object is granted to the calling thread, and the mutex is set to nonsignaled.
            </summary>
        </member>
        <member name="F:Magic.WaitValues.WAIT_TIMEOUT">
            <summary>
            The time-out interval elapsed, and the object's state is nonsignaled.
            </summary>
        </member>
        <member name="F:Magic.WaitValues.WAIT_FAILED">
            <summary>
            The wait has failed.
            </summary>
        </member>
        <member name="F:Magic.WaitValues.INFINITE">
            <summary>
            Wait an infinite amount of time for the object to become signaled.
            </summary>
        </member>
        <member name="T:Magic.CONTEXT_FLAGS">
            <summary>
            Determines which registers are returned or set when using <see cref="M:Magic.Imports.GetThreadContext(System.IntPtr,Magic.CONTEXT@)"/> or <see cref="M:Magic.Imports.SetThreadContext(System.IntPtr,Magic.CONTEXT@)"/>.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT_FLAGS.CONTEXT_CONTROL">
            <summary>
            SS:SP, CS:IP, FLAGS, BP
            </summary>
        </member>
        <member name="F:Magic.CONTEXT_FLAGS.CONTEXT_INTEGER">
            <summary>
            AX, BX, CX, DX, SI, DI
            </summary>
        </member>
        <member name="F:Magic.CONTEXT_FLAGS.CONTEXT_SEGMENTS">
            <summary>
            DS, ES, FS, GS
            </summary>
        </member>
        <member name="F:Magic.CONTEXT_FLAGS.CONTEXT_FLOATING_POINT">
            <summary>
            387 state
            </summary>
        </member>
        <member name="F:Magic.CONTEXT_FLAGS.CONTEXT_DEBUG_REGISTERS">
            <summary>
            DB 0-3,6,7
            </summary>
        </member>
        <member name="F:Magic.CONTEXT_FLAGS.CONTEXT_EXTENDED_REGISTERS">
            <summary>
            cpu specific extensions
            </summary>
        </member>
        <member name="F:Magic.CONTEXT_FLAGS.CONTEXT_FULL">
            <summary>
            Everything but extended information and debug registers.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT_FLAGS.CONTEXT_ALL">
            <summary>
            Everything.
            </summary>
        </member>
        <member name="T:Magic.FLOATING_SAVE_AREA">
            <summary>
            Returned if <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_FLOATING_POINT"/> flag is specified.
            </summary>
        </member>
        <member name="F:Magic.FLOATING_SAVE_AREA.ControlWord">
            <summary>
            None.
            </summary>
        </member>
        <member name="F:Magic.FLOATING_SAVE_AREA.StatusWord">
            <summary>
            None.
            </summary>
        </member>
        <member name="F:Magic.FLOATING_SAVE_AREA.TagWord">
            <summary>
            None.
            </summary>
        </member>
        <member name="F:Magic.FLOATING_SAVE_AREA.ErrorOffset">
            <summary>
            None.
            </summary>
        </member>
        <member name="F:Magic.FLOATING_SAVE_AREA.ErrorSelector">
            <summary>
            None.
            </summary>
        </member>
        <member name="F:Magic.FLOATING_SAVE_AREA.DataOffset">
            <summary>
            None.
            </summary>
        </member>
        <member name="F:Magic.FLOATING_SAVE_AREA.DataSelector">
            <summary>
            None.
            </summary>
        </member>
        <member name="F:Magic.FLOATING_SAVE_AREA.RegisterArea">
            <summary>
            None.
            </summary>
        </member>
        <member name="F:Magic.FLOATING_SAVE_AREA.Cr0NpxState">
            <summary>
            None.
            </summary>
        </member>
        <member name="T:Magic.CONTEXT">
            <summary>
            Used for getting or setting a thread's context.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.ContextFlags">
            <summary>
             The flags values within this flag control the contents of a CONTEXT record.
            
             If the context record is used as an input parameter, then for each portion of the context record controlled by a flag whose value is set, it is assumed that that portion of the context record contains valid context. If the context record is being used to modify a threads context, then only that portion of the threads context will be modified.
            
             If the context record is used as an IN OUT parameter to capture the context of a thread, then only those portions of the thread's context corresponding to set flags will be returned.
            
             The context record is never used as an OUT only parameter.
             </summary>
        </member>
        <member name="F:Magic.CONTEXT.Dr0">
            <summary>
            Specified/returned if <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_DEBUG_REGISTERS"/> flag is set.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.Dr1">
            <summary>
            Specified/returned if <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_DEBUG_REGISTERS"/> flag is set.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.Dr2">
            <summary>
            Specified/returned if <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_DEBUG_REGISTERS"/> flag is set.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.Dr3">
            <summary>
            Specified/returned if <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_DEBUG_REGISTERS"/> flag is set.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.Dr6">
            <summary>
            Specified/returned if <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_DEBUG_REGISTERS"/> flag is set.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.Dr7">
            <summary>
            Specified/returned if <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_DEBUG_REGISTERS"/> flag is set.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.FloatSave">
            <summary>
            This section is specified/returned if the ContextFlags word contians the flag CONTEXT_FLOATING_POINT.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.SegGs">
            <summary>
            This is specified/returned if the ContextFlags word contains the flag <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_SEGMENTS"/>.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.SegFs">
            <summary>
            This is specified/returned if the ContextFlags word contains the flag <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_SEGMENTS"/>.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.SegEs">
            <summary>
            This is specified/returned if the ContextFlags word contains the flag <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_SEGMENTS"/>.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.SegDs">
            <summary>
            This is specified/returned if the ContextFlags word contains the flag <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_SEGMENTS"/>.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.Edi">
            <summary>
            This register is specified/returned if the ContextFlags word contains the flag <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_INTEGER"/>.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.Esi">
            <summary>
            This register is specified/returned if the ContextFlags word contains the flag <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_INTEGER"/>.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.Ebx">
            <summary>
            This register is specified/returned if the ContextFlags word contains the flag <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_INTEGER"/>.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.Edx">
            <summary>
            This register is specified/returned if the ContextFlags word contains the flag <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_INTEGER"/>.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.Ecx">
            <summary>
            This register is specified/returned if the ContextFlags word contains the flag <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_INTEGER"/>.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.Eax">
            <summary>
            This register is specified/returned if the ContextFlags word contains the flag <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_INTEGER"/>.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.Ebp">
            <summary>
            This register is specified/returned if the ContextFlags word contains the flag <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_CONTROL"/>.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.Eip">
            <summary>
            This register is specified/returned if the ContextFlags word contains the flag <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_CONTROL"/>.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.SegCs">
            <summary>
            This register is specified/returned if the ContextFlags word contains the flag <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_CONTROL"/>.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.EFlags">
            <summary>
            This register is specified/returned if the ContextFlags word contains the flag <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_CONTROL"/>.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.Esp">
            <summary>
            This register is specified/returned if the ContextFlags word contains the flag <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_CONTROL"/>.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.SegSs">
            <summary>
            This register is specified/returned if the ContextFlags word contains the flag <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_CONTROL"/>.
            </summary>
        </member>
        <member name="F:Magic.CONTEXT.ExtendedRegisters">
            <summary>
            This section is specified/returned if the ContextFlags word contains the flag <see cref="F:Magic.CONTEXT_FLAGS.CONTEXT_EXTENDED_REGISTERS"/>.  The format and contexts are processor specific.
            </summary>
        </member>
        <member name="T:Magic.Imports">
            <summary>
            Methods imported from Win32 libraries.
            </summary>
        </member>
        <member name="M:Magic.Imports.EnumWindows(Magic.Imports.EnumWindowsProc,System.IntPtr)">
            <summary>
            Enumerates all open windows.
            </summary>
            <param name="lpEnumFunc">Callback function that will be called with the window handle of each window.</param>
            <param name="lParam">Parameter that will be passed to the callback function.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.Imports.GetWindowTitle(System.IntPtr,System.Int32)">
            <summary>
            Returns the title of a window.
            </summary>
            <param name="hWnd">The window handle of the window in question.</param>
            <param name="nMaxCount">Maximum number of characters in the window title.</param>
            <returns>Returns null on failure.</returns>
        </member>
        <member name="M:Magic.Imports.GetWindowTitle(System.IntPtr)">
            <summary>
            Returns the title of a window.
            </summary>
            <param name="hWnd">The window handle of the window in question.</param>
            <returns>Returns null on failure.</returns>
        </member>
        <member name="M:Magic.Imports.GetClassName(System.IntPtr,System.Int32)">
            <summary>
            Gets the classname of the supplied window.
            </summary>
            <param name="hWnd">The window handle of the window in question.</param>
            <param name="nMaxCount">The maximum number of characters to return.</param>
            <returns>Returns the classname of the supplied window.</returns>
        </member>
        <member name="M:Magic.Imports.GetClassName(System.IntPtr)">
            <summary>
            Gets the classname of the supplied window.
            </summary>
            <param name="hWnd">The window handle of the window in question.</param>
            <returns>Returns the classname of the supplied window.</returns>
        </member>
        <member name="M:Magic.Imports.IsWindowVisible(System.IntPtr)">
            <summary>
            Determines whether a window is visible or hidden.
            </summary>
            <param name="hWnd">The window handle of the window in question.</param>
            <returns>Returns true if the window is visible, false if not.</returns>
        </member>
        <member name="M:Magic.Imports.GetWindowThreadProcessId(System.IntPtr,System.Int32@)">
            <summary>
            Gets the process and thread IDs associated with a given window.
            </summary>
            <param name="hWnd">The window handle of the window in question.</param>
            <param name="dwProcessId">[Out] The process ID of the process which created the provided window.</param>
            <returns>The thread ID of the process which created the provided window.</returns>
        </member>
        <member name="M:Magic.Imports.OpenProcess(System.UInt32,System.Boolean,System.Int32)">
            <summary>
            Open process for external manipulation.
            </summary>
            <param name="dwDesiredAccess">The desired access to the external program.</param>
            <param name="bInheritHandle">Whether or not we wish to inherit a handle.</param>
            <param name="dwProcessId">The unique process ID of the external program.</param>
            <returns>Returns a process handle used in memory manipulation.</returns>
        </member>
        <member name="M:Magic.Imports.CloseHandle(System.IntPtr)">
            <summary>
            Closes an open object handle.
            </summary>
            <param name="hObject">The object handle we wish to close.</param>
            <returns>Returns non-zero if success, zero if failure.</returns>
        </member>
        <member name="M:Magic.Imports.GetModuleHandle(System.String)">
             <summary>
             Retrieves a module handle for the specified module. The module must have been loaded by the calling process.
             </summary>
             <param name="lpModuleName">
             The name of the loaded module (either a .dll or .exe file). If the file name extension is omitted, the default library extension .dll is appended. The file name string can include a trailing point character (.) to indicate that the module name has no extension. The string does not have to specify a path. When specifying a path, be sure to use backslashes (\), not forward slashes (/). The name is compared (case independently) to the names of modules currently mapped into the address space of the calling process.
            
             If this parameter is NULL, GetModuleHandle returns a handle to the file used to create the calling process (.exe file).
             </param>
             <returns>If success, returns the base address of the module; if failure, returns UIntPtr.Zero.</returns>
        </member>
        <member name="M:Magic.Imports.GetProcAddress(System.UIntPtr,System.String)">
            <summary>
            Retrieves the address of an exported function or variable from the specified dynamic-link library (DLL).
            </summary>
            <param name="hModule">A handle to the DLL module that contains the function or variable.</param>
            <param name="lpProcName">The function or variable name, or the function's ordinal value. If this parameter is an ordinal value, it must be in the low-order word; the high-order word must be zero.</param>
            <returns>
            If the function succeeds, the return value is the address of the exported function or variable.
            
            If the function fails, the return value is NULL (UIntPtr.Zero).
            </returns>
        </member>
        <member name="M:Magic.Imports.ReadProcessMemory(System.IntPtr,System.UInt32,System.IntPtr,System.Int32,System.Int32@)">
            <summary>
            Reads raw bytes from another process' memory.
            </summary>
            <param name="hProcess">Handle to the external process.</param>
            <param name="dwAddress">Address from which to read.</param>
            <param name="lpBuffer">[Out] Allocated buffer into which raw bytes will be read. (Hint: Use Marshal.AllocHGlobal)</param>
            <param name="nSize">Number of bytes to be read.</param>
            <param name="lpBytesRead">[Out] Number of bytes actually read.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.Imports.WriteProcessMemory(System.IntPtr,System.UInt32,System.IntPtr,System.Int32,System.IntPtr@)">
            <summary>
            Writes raw bytes to another process' memory.
            </summary>
            <param name="hProcess">Handle to the external process.</param>
            <param name="dwAddress">Address to which bytes will be written.</param>
            <param name="lpBuffer">Unmanaged buffer that will be written to process in question.</param>
            <param name="nSize">Number of bytes to be written.</param>
            <param name="iBytesWritten">[Out] Number of bytes actually written.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.Imports.VirtualAllocEx(System.IntPtr,System.UInt32,System.Int32,System.UInt32,System.UInt32)">
            <summary>
            Reserves or commits a region of memory within the virtual address space of a specified process. The function initializes the memory it allocates to zero, unless MEM_RESET is used.
            </summary>
            <param name="hProcess">The handle to a process. The function allocates memory within the virtual address space of this process.</param>
            <param name="dwAddress">The pointer that specifies a desired starting address for the region of pages that you want to allocate. (optional)</param>
            <param name="nSize">The size of the region of memory to allocate, in bytes.  If dwAddress is null, nSize is rounded up to the next page boundary.</param>
            <param name="dwAllocationType">The type of memory allocation. </param>
            <param name="dwProtect">The memory protection for the region of pages to be allocated.</param>
            <returns></returns>
        </member>
        <member name="M:Magic.Imports.VirtualFreeEx(System.IntPtr,System.UInt32,System.Int32,System.UInt32)">
            <summary>
            Releases, decommits, or releases and decommits a region of memory within the virtual address space of a specified process.
            </summary>
            <param name="hProcess">A handle to a process. The function frees memory within the virtual address space of the process. </param>
            <param name="dwAddress">A pointer to the starting address of the region of memory to be freed. </param>
            <param name="nSize">The size of the region of memory to free, in bytes.  If the dwFreeType parameter is MEM_RELEASE, dwSize must be 0 (zero). The function frees the entire region that is reserved in the initial allocation call to VirtualAllocEx.</param>
            <param name="dwFreeType">The type of free operation.  See Imports.MemoryFreeType.</param>
            <returns>If the function succeeds, the return value is a nonzero value.  If the function fails, the return value is 0 (zero).</returns>
        </member>
        <member name="M:Magic.Imports.CreateRemoteThread(System.IntPtr,System.IntPtr,System.UInt32,System.IntPtr,System.IntPtr,System.UInt32,System.IntPtr@)">
            <summary>
            Creates a thread that runs in the virtual address space of another process.
            </summary>
            <param name="hProcess">A handle to the process in which the thread is to be created.</param>
            <param name="lpThreadAttributes">A pointer to a SECURITY_ATTRIBUTES structure that specifies a security descriptor for the new thread and determines whether child processes can inherit the returned handle. If lpThreadAttributes is NULL, the thread gets a default security descriptor and the handle cannot be inherited.</param>
            <param name="dwStackSize">The initial size of the stack, in bytes. The system rounds this value to the nearest page. If this parameter is 0 (zero), the new thread uses the default size for the executable.</param>
            <param name="lpStartAddress">A pointer to the application-defined function of type LPTHREAD_START_ROUTINE to be executed by the thread and represents the starting address of the thread in the remote process. The function must exist in the remote process.</param>
            <param name="lpParameter">A pointer to a variable to be passed to the thread function.</param>
            <param name="dwCreationFlags">The flags that control the creation of the thread.</param>
            <param name="dwThreadId">A pointer to a variable that receives the thread identifier.</param>
            <returns>If the function succeeds, the return value is a handle to the new thread.  If the function fails, the return value is IntPtr.Zero.</returns>
        </member>
        <member name="M:Magic.Imports.WaitForSingleObject(System.IntPtr,System.UInt32)">
            <summary>
            Waits until the specified object is in the signaled state or the time-out interval elapses.
            </summary>
            <param name="hObject">A handle to the object. For a list of the object types whose handles can be specified, see the following Remarks section.</param>
            <param name="dwMilliseconds">The time-out interval, in milliseconds. The function returns if the interval elapses, even if the object's state is nonsignaled. If dwMilliseconds is zero, the function tests the object's state and returns immediately. If dwMilliseconds is INFINITE, the function's time-out interval never elapses.</param>
            <returns>If the function succeeds, the return value indicates the event that caused the function to return. If the function fails, the return value is WAIT_FAILED ((DWORD)0xFFFFFFFF).</returns>
        </member>
        <member name="M:Magic.Imports.GetExitCodeThread(System.IntPtr,System.UIntPtr@)">
            <summary>
            Retrieves the termination status of the specified thread.
            </summary>
            <param name="hThread">A handle to the thread.</param>
            <param name="lpExitCode">[Out] The exit code of the thread.</param>
            <returns>A pointer to a variable to receive the thread termination status.For more information.</returns>
        </member>
        <member name="M:Magic.Imports.OpenThread(System.UInt32,System.Boolean,System.UInt32)">
            <summary>
            Opens an existing thread object.
            </summary>
            <param name="dwDesiredAccess">The access to the thread object. This access right is checked against the security descriptor for the thread. This parameter can be one or more of the thread access rights.</param>
            <param name="bInheritHandle">If this value is TRUE, processes created by this process will inherit the handle. Otherwise, the processes do not inherit this handle.</param>
            <param name="dwThreadId">The identifier of the thread to be opened.</param>
            <returns>
            If the function succeeds, the return value is an open handle to the specified thread.
            
            If the function fails, the return value is NULL.
            </returns>
        </member>
        <member name="M:Magic.Imports.SuspendThread(System.IntPtr)">
            <summary>
            Suspends execution of a given thread.
            </summary>
            <param name="hThread">Handle to the thread that will be suspended.</param>
            <returns>Returns (DWORD)-1 on failure, otherwise the suspend count of the thread.</returns>
        </member>
        <member name="M:Magic.Imports.ResumeThread(System.IntPtr)">
            <summary>
            Resumes execution of a given thread.
            </summary>
            <param name="hThread">Handle to the thread that will be suspended.</param>
            <returns>Returns (DWORD)-1 on failure, otherwise the previous suspend count of the thread.</returns>
        </member>
        <member name="M:Magic.Imports.TerminateThread(System.IntPtr,System.UInt32)">
            <summary>
            Terminates the specified thread.
            </summary>
            <param name="hThread">Handle to the thread to exit.</param>
            <param name="dwExitCode">Exit code that will be stored in the thread object.</param>
            <returns>Returns zero on failure, non-zero on success.</returns>
        </member>
        <member name="M:Magic.Imports.GetThreadContext(System.IntPtr,Magic.CONTEXT@)">
            <summary>
            Gets the context of a given thread.
            </summary>
            <param name="hThread">Handle to the thread for which the context will be returned.</param>
            <param name="lpContext">CONTEXT structure into which context will be read</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.Imports.SetThreadContext(System.IntPtr,Magic.CONTEXT@)">
            <summary>
            Sets the context of a given thread.
            </summary>
            <param name="hThread">Handle to the thread for which the context will be set.</param>
            <param name="lpContext">CONTEXT structure to which the thread's context will be set.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="T:Magic.Imports.EnumWindowsProc">
            <summary>
            Callback function to be used with <see cref="M:Magic.Imports.EnumWindows(Magic.Imports.EnumWindowsProc,System.IntPtr)"/>.
            </summary>
            <param name="hWnd">The window handle of the current window.</param>
            <param name="lParam">The parameter passed to EnumWindows.</param>
            <returns>To continue enumeration, the callback function must return TRUE; to stop enumeration, it must return FALSE. </returns>
        </member>
        <member name="T:Magic.SProcess">
            <summary>
            Contains static methods for finding and opening a process.
            </summary>
        </member>
        <member name="M:Magic.SProcess.OpenProcess(System.Int32,System.UInt32)">
            <summary>
            Open process for external manipulation.
            </summary>
            <param name="dwProcessId">Process ID of external process to be opened.</param>
            <param name="dwAccessRights">Required access to external process.</param>
            <returns>Returns IntPtr.Zero on failure, non-zero on success.</returns>
        </member>
        <member name="M:Magic.SProcess.OpenProcess(System.Int32)">
            <summary>
            Open process for external manipulation.  PROCESS_ALL_ACCESS will automatically be granted and handle will not be inherited.
            </summary>
            <param name="dwProcessId">The unique process ID of the external program.</param>
            <returns>Returns IntPtr.Zero on failure, non-zero on success.</returns>
        </member>
        <member name="M:Magic.SProcess.OpenProcess(System.IntPtr,System.UInt32)">
            <summary>
            Open process for external manipulation.
            </summary>
            <param name="hWnd">Handle to the main window of the process to be opened.</param>
            <param name="dwAccessRights">Required access to external process.</param>
            <returns>Returns IntPtr.Zero on failure, non-zero on success.</returns>
        </member>
        <member name="M:Magic.SProcess.OpenProcess(System.IntPtr)">
            <summary>
            Open process for external manipulation.  PROCESS_ALL_ACCESS will automatically be granted and handle will not be inherited.
            </summary>
            <param name="hWnd">Main window handle of the process.</param>
            <returns>Returns IntPtr.Zero on failure, non-zero on success.</returns>
        </member>
        <member name="M:Magic.SProcess.GetProcessFromWindow(System.IntPtr)">
            <summary>
            Gets the process ID of the process that created the supplied window handle.
            </summary>
            <param name="hWnd">Handle to the main window of the process in question.</param>
            <returns>Returns non-zero on success, zero on failure.</returns>
        </member>
        <member name="M:Magic.SProcess.GetProcessFromWindowTitle(System.String)">
            <summary>
            Gets the process ID of the process that created the first window to match the given window title.
            </summary>
            <param name="WindowTitle">Title of the main window whose process id we want.</param>
            <returns>Returns non-zero on success, zero on failure.</returns>
        </member>
        <member name="M:Magic.SProcess.GetProcessesFromWindowTitle(System.String)">
            <summary>
            Returns an array of process ids of processes that match given window title.
            </summary>
            <param name="WindowTitle">Title of windows to match.</param>
            <returns>Returns null on failure, array of integers populated with process ids on success.</returns>
        </member>
        <member name="M:Magic.SProcess.GetProcessFromClassname(System.String)">
            <summary>
            Gets the process ID of the process that created the first window to match the given window title.
            </summary>
            <param name="Classname">Classname of the main window whose process id we want.</param>
            <returns>Returns non-zero on success, zero on failure.</returns>
        </member>
        <member name="M:Magic.SProcess.GetProcessesFromClassname(System.String)">
            <summary>
            Returns an array of process ids of processes that match given window title.
            </summary>
            <param name="Classname">Classname of windows to match.</param>
            <returns>Returns null on failure, array of integers populated with process ids on success.</returns>
        </member>
        <member name="M:Magic.SProcess.GetProcessFromProcessName(System.String)">
            <summary>
            Gets the process id of the process whose executable name matches that which is supplied.
            </summary>
            <param name="ProcessName">Name of the executable to match.</param>
            <returns>Returns non-zero on success, zero on failure.</returns>
        </member>
        <member name="T:Magic.SInject">
            <summary>
            Includes static methods for injecting libraries into an external process.
            </summary>
        </member>
        <member name="M:Magic.SInject.InjectDllCreateThread(System.IntPtr,System.String)">
            <summary>
            Injects a dll into a process by creating a remote thread on LoadLibrary.
            </summary>
            <param name="hProcess">Handle to the process into which dll will be injected.</param>
            <param name="szDllPath">Full path of the dll that will be injected.</param>
            <returns>Returns the base address of the injected dll on success, zero on failure.</returns>
        </member>
        <member name="M:Magic.SInject.InjectDllRedirectThread(System.IntPtr,System.IntPtr,System.String)">
            <summary>
            Injects a dll into a process by hijacking the given thread and redirecting it to LoadLibrary.
            </summary>
            <param name="hProcess">Handle to process into which dll will be injected.</param>
            <param name="hThread">Handle to thread that will be hijacked.</param>
            <param name="szDllPath">Full path to the dll to be injected.</param>
            <returns>Returns the base address of the injected dll on success, zero on failure.</returns>
        </member>
        <member name="M:Magic.SInject.InjectDllRedirectThread(System.IntPtr,System.Int32,System.String)">
            <summary>
            Injects a dll into a process by hijacking the process' main thread and redirecting it to LoadLibrary.
            </summary>
            <param name="hProcess">Handle to the process into which dll will be injected.</param>
            <param name="dwProcessId">Id of the process into which dll will be injected.</param>
            <param name="szDllPath">Full path to the dll to be injected.</param>
            <returns>Returns the base address of the injected dll on success, zero on failure.</returns>
        </member>
        <member name="M:Magic.SInject.InjectCode(System.IntPtr,System.UInt32,System.String)">
            <summary>
            Assembles mnemonics and injects resulting bytecode into given process.
            </summary>
            <param name="hProcess">Handle to the process into which code will be injected.</param>
            <param name="dwAddress">Address at which code will be injected.</param>
            <param name="szAssembly">Assembly mnemonics to be assembled and injected.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.SInject.InjectCode(System.IntPtr,System.UInt32,System.String,System.Object[])">
            <summary>
            Assembles mnemonics and injects resulting bytecode into given process.
            </summary>
            <param name="hProcess">Handle to the process into which code will be injected.</param>
            <param name="dwAddress">Address at which code will be injected.</param>
            <param name="szFormat">Format string containing assembly mnemonics.</param>
            <param name="args">Arguments to be inserted in the format string.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.SInject.InjectCode(System.IntPtr,System.String)">
            <summary>
            Assembles mnemonics and injects resulting bytecode into given process.
            </summary>
            <param name="hProcess">Handle to the process into which code will be injected.</param>
            <param name="szAssembly">Assembly mnemonics to be assembled and injected.</param>
            <returns>Returns zero on failure, otherwise a chunk of memory that has been allocated in the target process where code was injected.</returns>
            <remarks>Don't forget to free the memory allocated for the code when you are finished.</remarks>
        </member>
        <member name="M:Magic.SInject.InjectCode(System.IntPtr,System.String,System.Object[])">
            <summary>
            Assembles mnemonics and injects resulting bytecode into given process.
            </summary>
            <param name="hProcess">Handle to the process into which code will be injected.</param>
            <param name="szFormatString">Format string containing assembly mnemonics.</param>
            <param name="args">Arguments to be inserted in the format string.</param>
            <returns>Returns zero on failure, otherwise a chunk of memory that has been allocated in the target process where code was injected.</returns>
            <remarks>Don't forget to free the memory allocated for the code when you are finished.</remarks>
        </member>
        <member name="T:Magic.SWindow">
            <summary>
            Contains static methods for finding windows.
            </summary>
        </member>
        <member name="M:Magic.SWindow.EnumWindows">
            <summary>
            Gets all open windows, be they child or parent.
            </summary>
            <returns>Returns an array of window handles.</returns>
        </member>
        <member name="M:Magic.SWindow.EnumMainWindows">
            <summary>
            Gets all open main windows.
            </summary>
            <returns>Returns an array of window handles.</returns>
        </member>
        <member name="M:Magic.SWindow.FindWindows(System.String,System.String)">
            <summary>
            Finds all windows, parent and child, that match the supplied classname or window title.
            </summary>
            <param name="Classname">Classname of the window(s) to match.</param>
            <param name="WindowTitle">Window title of the window(s) to match.</param>
            <returns>Returns an array of window handles.</returns>
        </member>
        <member name="M:Magic.SWindow.FindWindow(System.String,System.String)">
            <summary>
            Finds the first window, parent and child, that match the supplied classname or window title.
            </summary>
            <param name="Classname">Classname of the window(s) to match.</param>
            <param name="WindowTitle">Window title of the window(s) to match.</param>
            <returns>Returns a window handle.</returns>
        </member>
        <member name="M:Magic.SWindow.FindMainWindows(System.String,System.String)">
            <summary>
            Finds all top-level windows that match the supplied classname or window title.
            </summary>
            <param name="Classname">Classname of the window(s) to match.</param>
            <param name="WindowTitle">Window title of the window(s) to match.</param>
            <returns>Returns an array of window handles.</returns>
        </member>
        <member name="M:Magic.SWindow.FindMainWindow(System.String,System.String)">
            <summary>
            Finds the first top-level window that matches the supplied classname or window title.
            </summary>
            <param name="Classname">Classname of the window(s) to match.</param>
            <param name="WindowTitle">Window title of the window(s) to match.</param>
            <returns>Returns a window handle.</returns>
        </member>
        <member name="M:Magic.SWindow.FindWindowsContains(System.String,System.String)">
            <summary>
            Finds all windows, parent and child, that contain the supplied classname or window title.
            </summary>
            <param name="Classname">Classname of the window(s) to match.</param>
            <param name="WindowTitle">Window title of the window(s) to match.</param>
            <returns>Returns an array of window handles.</returns>
        </member>
        <member name="M:Magic.SWindow.FindWindowContains(System.String,System.String)">
            <summary>
            Finds the first window, parent and child, that contains either of the supplied classname or window title.
            </summary>
            <param name="Classname">Classname of the window(s) to match.</param>
            <param name="WindowTitle">Window title of the window(s) to match.</param>
            <returns>Returns a window handle.</returns>
        </member>
        <member name="M:Magic.SWindow.FindMainWindowsContains(System.String,System.String)">
            <summary>
            Finds all top-level windows that contain the supplied classname or window title.
            </summary>
            <param name="Classname">Classname of the window(s) to match.</param>
            <param name="WindowTitle">Window title of the window(s) to match.</param>
            <returns>Returns an array of window handles.</returns>
        </member>
        <member name="M:Magic.SWindow.FindMainWindowContains(System.String,System.String)">
            <summary>
            Finds the first top-level window that contains the supplied classname or window title.
            </summary>
            <param name="Classname">Classname of the window(s) to match.</param>
            <param name="WindowTitle">Window title of the window(s) to match.</param>
            <returns>Returns a window handle.</returns>
        </member>
        <member name="M:Magic.SWindow.FindWindowByProcessName(System.String)">
            <summary>
            Finds the main window of the provided process.
            </summary>
            <param name="ProcessName">Name of the process executable.</param>
            <returns>Returns a window handle.</returns>
            <remarks>ProcessName may contain the trailing extension or not, though it would be less problematic if any file extension were omitted (i.e. '.exe').</remarks>
        </member>
        <member name="M:Magic.SWindow.FindWindowsByProcessName(System.String)">
            <summary>
            Finds all main windows that match the provided process name.
            </summary>
            <param name="ProcessName">Name of the process executable.</param>
            <returns>Returns an array of window handles.</returns>
            <remarks>ProcessName may contain the trailing extension or not, though it would be less problematic if any file extension were omitted (i.e. '.exe').</remarks>
        </member>
        <member name="M:Magic.SWindow.FindWindowByProcessId(System.Int32)">
            <summary>
            Finds the main window of the provided process.
            </summary>
            <param name="dwProcessId">The process Id of the process in question.</param>
            <returns>Returns a window handle.</returns>
        </member>
        <member name="T:Magic.SMemory">
            <summary>
            Used to manipulate an external process' memory.
            </summary>
        </member>
        <member name="F:Magic.SMemory.ASCII_CHAR_LENGTH">
            <summary>
            Number of bytes used to represent an ASCII character.
            </summary>
        </member>
        <member name="F:Magic.SMemory.UNICODE_CHAR_LENGTH">
            <summary>
            Number of bytes used to represent a Unicode character.
            </summary>
        </member>
        <member name="F:Magic.SMemory.DEFAULT_MEMORY_SIZE">
            <summary>
            Default size to use when allocating memory.
            </summary>
        </member>
        <member name="M:Magic.SMemory.ReadRawMemory(System.IntPtr,System.UInt32,System.IntPtr,System.Int32)">
            <summary>
            Reads memory from an external process into a buffer of allocated memory in the local process.
            </summary>
            <param name="hProcess">Handle to the external process from which memory will be read.</param>
            <param name="dwAddress">Address in external process from which memory will be read.</param>
            <param name="lpBuffer">Pointer to a buffer of allocated memory of at least nSize bytes.</param>
            <param name="nSize">Number of bytes to be read.</param>
            <returns>Returns the number of bytes actually read.</returns>
        </member>
        <member name="M:Magic.SMemory.ReadBytes(System.IntPtr,System.UInt32,System.Int32)">
            <summary>
            Reads an array of bytes of specified size out of an external process' memory.
            </summary>
            <param name="hProcess">Handle to the external process in question.</param>
            <param name="dwAddress">Address at which memory will be read.</param>
            <param name="nSize">Number of bytes to be read.</param>
            <returns>Returns null on failure.</returns>
        </member>
        <member name="M:Magic.SMemory.ReadObject(System.IntPtr,System.UInt32,System.Type)">
            <summary>
            Reads a structure/object from an external process' memory.
            </summary>
            <param name="hProcess">Handle to the process in question.</param>
            <param name="dwAddress">Address at which memory will be read.</param>
            <param name="objType">Type of object to be read (hint: use typeof(ObjectType) macro)</param>
            <returns>Returns null on failure.</returns>
        </member>
        <member name="M:Magic.SMemory.ReadByte(System.IntPtr,System.UInt32)">
            <summary>
            Reads an unsigned byte from memory.
            </summary>
            <param name="hProcess">Handle to the process in question.</param>
            <param name="dwAddress">Address at which memory will be read.</param>
            <returns>Returns memory read from external process.</returns>
        </member>
        <member name="M:Magic.SMemory.ReadSByte(System.IntPtr,System.UInt32)">
            <summary>
            Reads a signed byte from memory.
            </summary>
            <param name="hProcess">Handle to the process in question.</param>
            <param name="dwAddress">Address at which memory will be read.</param>
            <returns>Returns memory read from external process.</returns>
        </member>
        <member name="M:Magic.SMemory.ReadUShort(System.IntPtr,System.UInt32,System.Boolean)">
            <summary>
            Reads an unsigned short from memory.
            </summary>
            <param name="hProcess">Handle to the process in question.</param>
            <param name="dwAddress">Address at which memory will be read.</param>
            <param name="bReverse">Determines whether bytes will be reversed before returning or not (big-endian or little-endian)</param>
            <returns>Returns memory read from external process.</returns>
        </member>
        <member name="M:Magic.SMemory.ReadUShort(System.IntPtr,System.UInt32)">
            <summary>
            Reads an unsigned short from memory.
            </summary>
            <param name="hProcess">Handle to the process in question.</param>
            <param name="dwAddress">Address at which memory will be read.</param>
            <returns>Returns memory read from external process.</returns>
        </member>
        <member name="M:Magic.SMemory.ReadShort(System.IntPtr,System.UInt32,System.Boolean)">
            <summary>
            Reads a signed short from memory.
            </summary>
            <param name="hProcess">Handle to the process in question.</param>
            <param name="dwAddress">Address at which memory will be read.</param>
            <param name="bReverse">Determines whether bytes will be reversed before returning or not (big-endian or little-endian)</param>
            <returns>Returns memory read from external process.</returns>
        </member>
        <member name="M:Magic.SMemory.ReadShort(System.IntPtr,System.UInt32)">
            <summary>
            Reads a signed short from memory.
            </summary>
            <param name="hProcess">Handle to the process in question.</param>
            <param name="dwAddress">Address at which memory will be read.</param>
            <returns>Returns memory read from external process.</returns>
        </member>
        <member name="M:Magic.SMemory.ReadUInt(System.IntPtr,System.UInt32,System.Boolean)">
            <summary>
            Reads an unsigned integer from memory.
            </summary>
            <param name="hProcess">Handle to the process in question.</param>
            <param name="dwAddress">Address at which memory will be read.</param>
            <param name="bReverse">Determines whether bytes will be reversed before returning or not (big-endian or little-endian)</param>
            <returns>Returns memory read from external process.</returns>
        </member>
        <member name="M:Magic.SMemory.ReadUInt(System.IntPtr,System.UInt32)">
            <summary>
            Reads an unsigned integer from memory.
            </summary>
            <param name="hProcess">Handle to the process in question.</param>
            <param name="dwAddress">Address at which memory will be read.</param>
            <returns>Returns memory read from external process.</returns>
        </member>
        <member name="M:Magic.SMemory.ReadInt(System.IntPtr,System.UInt32,System.Boolean)">
            <summary>
            Reads a signed integer from memory.
            </summary>
            <param name="hProcess">Handle to the process in question.</param>
            <param name="dwAddress">Address at which memory will be read.</param>
            <param name="bReverse">Determines whether bytes will be reversed before returning or not (big-endian or little-endian)</param>
            <returns>Returns memory read from external process.</returns>
        </member>
        <member name="M:Magic.SMemory.ReadInt(System.IntPtr,System.UInt32)">
            <summary>
            Reads a signed integer from memory.
            </summary>
            <param name="hProcess">Handle to the process in question.</param>
            <param name="dwAddress">Address at which memory will be read.</param>
            <returns>Returns memory read from external process.</returns>
        </member>
        <member name="M:Magic.SMemory.ReadUInt64(System.IntPtr,System.UInt32,System.Boolean)">
            <summary>
            Reads an unsigned 64-bit integer from memory.
            </summary>
            <param name="hProcess">Handle to the process in question.</param>
            <param name="dwAddress">Address at which memory will be read.</param>
            <param name="bReverse">Determines whether bytes will be reversed before returning or not (big-endian or little-endian)</param>
            <returns>Returns memory read from external process.</returns>
        </member>
        <member name="M:Magic.SMemory.ReadUInt64(System.IntPtr,System.UInt32)">
            <summary>
            Reads an unsigned 64-bit integer from memory.
            </summary>
            <param name="hProcess">Handle to the process in question.</param>
            <param name="dwAddress">Address at which memory will be read.</param>
            <returns>Returns memory read from external process.</returns>
        </member>
        <member name="M:Magic.SMemory.ReadInt64(System.IntPtr,System.UInt32,System.Boolean)">
            <summary>
            Reads a signed 64-bit integer from memory.
            </summary>
            <param name="hProcess">Handle to the process in question.</param>
            <param name="dwAddress">Address at which memory will be read.</param>
            <param name="bReverse">Determines whether bytes will be reversed before returning or not (big-endian or little-endian)</param>
            <returns>Returns memory read from external process.</returns>
        </member>
        <member name="M:Magic.SMemory.ReadInt64(System.IntPtr,System.UInt32)">
            <summary>
            Reads a signed 64-bit integer from memory.
            </summary>
            <param name="hProcess">Handle to the process in question.</param>
            <param name="dwAddress">Address at which memory will be read.</param>
            <returns>Returns memory read from external process.</returns>
        </member>
        <member name="M:Magic.SMemory.ReadFloat(System.IntPtr,System.UInt32,System.Boolean)">
            <summary>
            Reads a single-precision float from memory.
            </summary>
            <param name="hProcess">Handle to the process in question.</param>
            <param name="dwAddress">Address at which memory will be read.</param>
            <param name="bReverse">Determines whether bytes will be reversed before returning or not (big-endian or little-endian)</param>
            <returns>Returns memory read from external process.</returns>
        </member>
        <member name="M:Magic.SMemory.ReadFloat(System.IntPtr,System.UInt32)">
            <summary>
            Reads a single-precision float from memory.
            </summary>
            <param name="hProcess">Handle to the process in question.</param>
            <param name="dwAddress">Address at which memory will be read.</param>
            <returns>Returns memory read from external process.</returns>
        </member>
        <member name="M:Magic.SMemory.ReadDouble(System.IntPtr,System.UInt32,System.Boolean)">
            <summary>
            Reads a double-precision float from memory.
            </summary>
            <param name="hProcess">Handle to the process in question.</param>
            <param name="dwAddress">Address at which memory will be read.</param>
            <param name="bReverse">Determines whether bytes will be reversed before returning or not (big-endian or little-endian)</param>
            <returns>Returns memory read from external process.</returns>
        </member>
        <member name="M:Magic.SMemory.ReadDouble(System.IntPtr,System.UInt32)">
            <summary>
            Reads a double-precision float from memory.
            </summary>
            <param name="hProcess">Handle to the process in question.</param>
            <param name="dwAddress">Address at which memory will be read.</param>
            <returns>Returns memory read from external process.</returns>
        </member>
        <member name="M:Magic.SMemory.ReadASCIIString(System.IntPtr,System.UInt32,System.Int32)">
            <summary>
            Reads an ASCII/ANSI string from memory.
            </summary>
            <param name="hProcess">Handle to the process in question.</param>
            <param name="dwAddress">Address at which memory will be read.</param>
            <param name="nLength"></param>
            <returns>Returns memory read from external process.</returns>
        </member>
        <member name="M:Magic.SMemory.ReadUnicodeString(System.IntPtr,System.UInt32,System.Int32)">
            <summary>
            Reads a Unicode string from memory.
            </summary>
            <param name="hProcess">Handle to the process in question.</param>
            <param name="dwAddress">Address at which memory will be read.</param>
            <param name="nLength"></param>
            <returns>Returns memory read from external process.</returns>
        </member>
        <member name="M:Magic.SMemory.WriteBytes(System.IntPtr,System.UInt32,System.Byte[],System.Int32)">
            <summary>
            Converts a managed byte array to an unmanaged C-style byte array and writes it to another process' memory.
            </summary>
            <param name="hProcess">Handle to the process to which memory will be written.</param>
            <param name="dwAddress">Address at which bytes will be written.</param>
            <param name="lpBytes">Byte array that will be written to other process' memory.</param>
            <param name="nSize">Number of bytes to be written.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.SMemory.WriteBytes(System.IntPtr,System.UInt32,System.Byte[])">
            <summary>
            Converts a managed byte array to an unmanaged C-style byte array and writes it to another process' memory.
            </summary>
            <param name="hProcess">Handle to the process to which memory will be written.</param>
            <param name="dwAddress">Address at which bytes will be written.</param>
            <param name="lpBytes">Byte array that will be written to other process' memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.SMemory.WriteObject(System.IntPtr,System.UInt32,System.Object,System.Type)">
            <summary>
            Copies a managed object/structure to unmanaged memory, then writes that buffer to another process' memory.
            </summary>
            <param name="hProcess">Handle to the process to which memory will be written.</param>
            <param name="dwAddress">Address at which bytes will be written.</param>
            <param name="objBuffer">The object which will be written to memory.</param>
            <param name="objType">The Type associated with the object to be written. (hint: use typeof macro or GetType() method)</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.SMemory.WriteObject(System.IntPtr,System.UInt32,System.Object)">
            <summary>
            Copies a managed object/structure to unmanaged memory, then writes that buffer to another process' memory.
            </summary>
            <param name="hProcess">Handle to the process to which memory will be written.</param>
            <param name="dwAddress">Address at which bytes will be written.</param>
            <param name="objBuffer">The object which will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.SMemory.WriteByte(System.IntPtr,System.UInt32,System.Byte)">
            <summary>
            Writes an unsigned byte to another process' memory.
            </summary>
            <param name="hProcess">Handle to the process to which value will be written.</param>
            <param name="dwAddress">Address to which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.SMemory.WriteSByte(System.IntPtr,System.UInt32,System.SByte)">
            <summary>
            Writes a signed byte to another process' memory.
            </summary>
            <param name="hProcess">Handle to the process to which value will be written.</param>
            <param name="dwAddress">Address to which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.SMemory.WriteUShort(System.IntPtr,System.UInt32,System.UInt16)">
            <summary>
            Writes an unsigned 16-bit short to another process' memory.
            </summary>
            <param name="hProcess">Handle to the process to which value will be written.</param>
            <param name="dwAddress">Address to which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.SMemory.WriteShort(System.IntPtr,System.UInt32,System.Int16)">
            <summary>
            Writes a signed 16-bit short to another process' memory.
            </summary>
            <param name="hProcess">Handle to the process to which value will be written.</param>
            <param name="dwAddress">Address to which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.SMemory.WriteUInt(System.IntPtr,System.UInt32,System.UInt32)">
            <summary>
            Writes an unsigned 32-bit integer to another process' memory.
            </summary>
            <param name="hProcess">Handle to the process to which value will be written.</param>
            <param name="dwAddress">Address to which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.SMemory.WriteInt(System.IntPtr,System.UInt32,System.Int32)">
            <summary>
            Writes a signed 32-bit integer to another process' memory.
            </summary>
            <param name="hProcess">Handle to the process to which value will be written.</param>
            <param name="dwAddress">Address to which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.SMemory.WriteUInt64(System.IntPtr,System.UInt32,System.UInt64)">
            <summary>
            Writes an unsigned 64-bit integer to another process' memory.
            </summary>
            <param name="hProcess">Handle to the process to which value will be written.</param>
            <param name="dwAddress">Address to which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.SMemory.WriteInt64(System.IntPtr,System.UInt32,System.Int64)">
            <summary>
            Writes a signed 64-bit integer to another process' memory.
            </summary>
            <param name="hProcess">Handle to the process to which value will be written.</param>
            <param name="dwAddress">Address to which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.SMemory.WriteFloat(System.IntPtr,System.UInt32,System.Single)">
            <summary>
            Writes a floating point, single precision integer to another process' memory.
            </summary>
            <param name="hProcess">Handle to the process to which value will be written.</param>
            <param name="dwAddress">Address to which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.SMemory.WriteDouble(System.IntPtr,System.UInt32,System.Double)">
            <summary>
            Writes a floating point, double precision integer to another process' memory.
            </summary>
            <param name="hProcess">Handle to the process to which value will be written.</param>
            <param name="dwAddress">Address to which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.SMemory.WriteASCIIString(System.IntPtr,System.UInt32,System.String)">
            <summary>
            Writes an Ansi string (each character is represented by one byte) to another process' memory.
            </summary>
            <param name="hProcess">Handle to the process to which value will be written.</param>
            <param name="dwAddress">Address to which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.SMemory.WriteUnicodeString(System.IntPtr,System.UInt32,System.String)">
            <summary>
            Writes a Unicode string (each character is represented by two bytes) to another process' memory.
            </summary>
            <param name="hProcess">Handle to the process to which value will be written.</param>
            <param name="dwAddress">Address to which value will be written.</param>
            <param name="Value">Value that will be written to memory.</param>
            <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.SMemory.AllocateMemory(System.IntPtr,System.Int32,System.UInt32,System.UInt32)">
            <summary>
            Allocates a block of memory in the target process.
            </summary>
            <param name="hProcess">Handle to the process in which memory will be allocated.</param>
            <param name="nSize">Number of bytes to be allocated.  Default is 0x1000.</param>
            <param name="dwAllocationType">The type of memory allocation.  See <see cref="T:Magic.MemoryAllocType"/></param>
            <param name="dwProtect">The memory protection for the region of pages to be allocated. If the pages are being committed, you can specify any one of the <see cref="T:Magic.MemoryProtectType"/> constants.</param>
            <returns>Returns zero on failure, or the base address of the allocated block of memory on success.</returns>
        </member>
        <member name="M:Magic.SMemory.AllocateMemory(System.IntPtr,System.Int32)">
            <summary>
            Allocates a block of memory in the target process.
            </summary>
            <param name="hProcess">Handle to the process in which memory will be allocated.</param>
            <param name="nSize">Number of bytes to be allocated.  Default is 0x1000.</param>
            <returns>Returns zero on failure, or the base address of the allocated block of memory on success.</returns>
            <remarks>Uses <see cref="F:Magic.MemoryAllocType.MEM_COMMIT"/> for allocation type and <see cref="F:Magic.MemoryProtectType.PAGE_EXECUTE_READWRITE"/> for protect type.</remarks>
        </member>
        <member name="M:Magic.SMemory.AllocateMemory(System.IntPtr)">
            <summary>
            Allocates 0x1000 bytes of memory in the target process.
            </summary>
            <param name="hProcess">Handle to the process in which memory will be allocated.</param>
            <returns>Returns zero on failure, or the base address of the allocated block of memory on success.</returns>
            <remarks>Uses <see cref="F:Magic.MemoryAllocType.MEM_COMMIT"/> for allocation type and <see cref="F:Magic.MemoryProtectType.PAGE_EXECUTE_READWRITE"/> for protect type.</remarks>
        </member>
        <member name="M:Magic.SMemory.FreeMemory(System.IntPtr,System.UInt32,System.Int32,System.UInt32)">
             <summary>
             Releases, decommits, or releases and decommits a region of memory within the virtual address space of a specified process.
             </summary>
             <param name="hProcess">Handle to the process in which memory will be freed.</param>
             <param name="dwAddress">A pointer to the starting address of the region of memory to be freed. </param>
             <param name="nSize">
             The size of the region of memory to free, in bytes. 
            
             If the dwFreeType parameter is MEM_RELEASE, dwSize must be 0 (zero). The function frees the entire region that is reserved in the initial allocation call to VirtualAllocEx.</param>
             <param name="dwFreeType">The type of free operation.  See <see cref="T:Magic.MemoryFreeType"/>.</param>
             <returns>Returns true on success, false on failure.</returns>
        </member>
        <member name="M:Magic.SMemory.FreeMemory(System.IntPtr,System.UInt32)">
            <summary>
            Releases, decommits, or releases and decommits a region of memory within the virtual address space of a specified process.
            </summary>
            <param name="hProcess">Handle to the process in which memory will be freed.</param>
            <param name="dwAddress">A pointer to the starting address of the region of memory to be freed. </param>
            <returns>Returns true on success, false on failure.</returns>
            <remarks>
            Uses <see cref="F:Magic.MemoryFreeType.MEM_RELEASE"/> to free the page(s) specified.
            </remarks>
        </member>
        <member name="T:Magic.SPattern">
            <summary>
            Provides static methods for finding a pattern or signature inside the memory of another process and its modules.
            </summary>
        </member>
        <member name="M:Magic.SPattern.FindPattern(System.IntPtr,System.Diagnostics.ProcessModule,System.String,System.String,System.Char[])">
            <summary>
            Finds a pattern or signature inside another process.
            </summary>
            <param name="hProcess">Handle to the process in whose memory pattern will be found.</param>
            <param name="pMod">Module which will be searched for the pattern.</param>
            <param name="szPattern">A character-delimited string representing the pattern to be found.</param>
            <param name="szMask">A string of 'x' (match), '!' (not-match), or '?' (wildcard).</param>
            <param name="Delimiter">Determines how the string will be split.  If null, defaults to ' '.</param>
            <returns>Returns 0 on failure, or the address of the start of the pattern on success.</returns>
        </member>
        <member name="M:Magic.SPattern.FindPattern(System.IntPtr,System.Diagnostics.ProcessModule[],System.String,System.String,System.Char[])">
            <summary>
            Finds a pattern or signature inside another process.
            </summary>
            <param name="hProcess">Handle to the process in whose memory pattern will be found.</param>
            <param name="pMods">An array of modules which will be searched for the pattern.</param>
            <param name="szPattern">A character-delimited string representing the pattern to be found.</param>
            <param name="szMask">A string of 'x' (match), '!' (not-match), or '?' (wildcard).</param>
            <param name="Delimiter">Determines how the string will be split.  If null, defaults to ' '.</param>
            <returns>Returns 0 on failure, or the address of the start of the pattern on success.</returns>
        </member>
        <member name="M:Magic.SPattern.FindPattern(System.IntPtr,System.Diagnostics.ProcessModuleCollection,System.String,System.String,System.Char[])">
            <summary>
            Finds a pattern or signature inside another process.
            </summary>
            <param name="hProcess">Handle to the process in whose memory pattern will be found.</param>
            <param name="pMods">An array of modules which will be searched for the pattern.</param>
            <param name="szPattern">A character-delimited string representing the pattern to be found.</param>
            <param name="szMask">A string of 'x' (match), '!' (not-match), or '?' (wildcard).</param>
            <param name="Delimiter">Determines how the string will be split.  If null, defaults to ' '.</param>
            <returns>Returns 0 on failure, or the address of the start of the pattern on success.</returns>
        </member>
        <member name="M:Magic.SPattern.FindPattern(System.IntPtr,System.UInt32,System.Int32,System.String,System.String,System.Char[])">
            <summary>
            Finds a pattern or signature inside another process.
            </summary>
            <param name="hProcess">Handle to the process in whose memory pattern will be found.</param>
            <param name="dwStart">Address on which the search will start.</param>
            <param name="nSize">Number of bytes in memory that will be searched.</param>
            <param name="szPattern">A character-delimited string representing the pattern to be found.</param>
            <param name="szMask">A string of 'x' (match), '!' (not-match), or '?' (wildcard).</param>
            <param name="Delimiter">Determines how the string will be split.  If null, defaults to ' '.</param>
            <returns>Returns 0 on failure, or the address of the start of the pattern on success.</returns>
        </member>
        <member name="M:Magic.SPattern.FindPattern(System.IntPtr,System.Diagnostics.ProcessModule,System.Byte[],System.String)">
            <summary>
            Finds a pattern or signature inside another process.
            </summary>
            <param name="hProcess">Handle to the process in whose memory pattern will be found.</param>
            <param name="pMod">Module which will be searched for the pattern.</param>
            <param name="bPattern">A byte-array representing the pattern to be found.</param>
            <param name="szMask">A string of 'x' (match), '!' (not-match), or '?' (wildcard).</param>
            <returns>Returns 0 on failure, or the address of the start of the pattern on success.</returns>
        </member>
        <member name="M:Magic.SPattern.FindPattern(System.IntPtr,System.Diagnostics.ProcessModule[],System.Byte[],System.String)">
            <summary>
            Finds a pattern or signature inside another process.
            </summary>
            <param name="hProcess">Handle to the process in whose memory pattern will be found.</param>
            <param name="pMods">An array of modules which will be searched for the pattern.</param>
            <param name="bPattern">A byte-array representing the pattern to be found.</param>
            <param name="szMask">A string of 'x' (match), '!' (not-match), or '?' (wildcard).</param>
            <returns>Returns 0 on failure, or the address of the start of the pattern on success.</returns>
        </member>
        <member name="M:Magic.SPattern.FindPattern(System.IntPtr,System.Diagnostics.ProcessModuleCollection,System.Byte[],System.String)">
            <summary>
            Finds a pattern or signature inside another process.
            </summary>
            <param name="hProcess">Handle to the process in whose memory pattern will be found.</param>
            <param name="pMods">An array of modules which will be searched for the pattern.</param>
            <param name="bPattern">A byte-array representing the pattern to be found.</param>
            <param name="szMask">A string of 'x' (match), '!' (not-match), or '?' (wildcard).</param>
            <returns>Returns 0 on failure, or the address of the start of the pattern on success.</returns>
        </member>
        <member name="M:Magic.SPattern.FindPattern(System.IntPtr,System.UInt32,System.Int32,System.Byte[],System.String)">
            <summary>
            Finds a pattern or signature inside another process.
            </summary>
            <param name="hProcess">Handle to the process in whose memory pattern will be found.</param>
            <param name="dwStart">Address on which the search will start.</param>
            <param name="nSize">Number of bytes in memory that will be searched.</param>
            <param name="bPattern">A byte-array representing the pattern to be found.</param>
            <param name="szMask">A string of 'x' (match), '!' (not-match), or '?' (wildcard).</param>
            <returns>Returns 0 on failure, or the address of the start of the pattern on success.</returns>
        </member>
        <member name="M:Magic.SPattern.FindPattern(System.Byte[],System.Byte[],System.String)">
            <summary>
            Finds a given pattern in an array of bytes.
            </summary>
            <param name="bData">Array of bytes in which to search for the pattern.</param>
            <param name="bPattern">A byte-array representing the pattern to be found.</param>
            <param name="szMask">A string of 'x' (match), '!' (not-match), or '?' (wildcard).</param>
            <returns>Returns 0 on failure, or the address of the start of the pattern on success.</returns>
        </member>
    </members>
</doc>
